import request from '@/utils/request';

/**
 * @description 创建退款申请
 * @param {object} data - 退款申请数据
 * @param {number} data.billId - 账单ID
 * @param {number} data.elderlyUserId - 老人用户ID
 * @param {number} data.amount - 退款金额
 * @param {string} data.reason - 退款原因
 * @returns {Promise<Result<number>>} 返回包含新创建退款记录ID的Promise
 */
export const createRefundRequest = (data) => {
  return request.post('/admin/refund/create', data);
};

/**
 * @description 分页查询退款记录
 * @param {object} params - 查询参数
 * @param {number} [params.elderlyUserId] - 老人用户ID (可选)
 * @param {string} [params.elderlyName] - 老人姓名 (可选)
 * @param {string} [params.status] - 状态 (可选, e.g., 'PENDING', 'APPROVED')
 * @param {string} [params.startTime] - 开始时间 (可选, ISO 8601格式, e.g., '2023-10-27T10:00:00')
 * @param {string} [params.endTime] - 结束时间 (可选, ISO 8601格式)
 * @param {number} [params.pageNum=1] - 当前页码
 * @param {number} [params.pageSize=10] - 每页数量
 * @returns {Promise<Result<IPage<RefundRecordDTO>>>} 返回分页后的退款记录数据
 */
export const getRefundRecordPage = (params) => {
  return request.get('/admin/refund/page', { params });
};

/**
 * @description 根据ID查询退款记录详情
 * @param {number} id - 退款记录ID
 * @returns {Promise<Result<RefundRecordDTO>>} 返回单个退款记录的详细信息
 */
export const getRefundRecordById = (id) => {
  return request.get(`/admin/refund/${id}`);
};

/**
 * @description 审核退款申请
 * @param {object} data - 审核数据
 * @param {number} data.refundId - 退款记录ID
 * @param {string} data.status - 审核结果 ('approved' 或 'rejected')
 * @param {string} [data.remarks] - 审核备注 (可选)
 * @returns {Promise<Result<boolean>>} 返回操作是否成功的Promise
 */
export const approveRefundRequest = (data) => {
  return request.post('/admin/refund/approve', data);
};

/**
 * @description 完成退款操作 (标记为已完成)
 * @param {number} refundId - 退款记录ID
 * @returns {Promise<Result<boolean>>} 返回操作是否成功的Promise
 */
export const completeRefund = (refundId) => {
  // 注意：这个接口是POST请求，但数据通过URL路径传递，没有请求体
  return request.post(`/admin/refund/complete/${refundId}`);
};

/**
 * @description 根据老人用户ID查询其所有的退款记录
 * @param {number} elderlyUserId - 老人用户ID
 * @returns {Promise<Result<List<RefundRecordDTO>>>} 返回该用户的所有退款记录列表
 */
export const getRefundRecordsByUserId = (elderlyUserId) => {
  return request.get(`/admin/refund/user/${elderlyUserId}`);
};

/**
 * @description 删除退款记录 (仅待审核或已拒绝的记录)
 * @param {number} id - 退款记录ID
 * @returns {Promise<Result<boolean>>} 返回操作是否成功的Promise
 */
export const deleteRefundRecord = (id) => {
  return request.delete(`/admin/refund/${id}`);
};